1ce02b015e5dbcc6f10bb3a4580c3fd8f995ea88,src/gr/uom/java/ast/decomposition/cfg/MethodCallAnalyzer.java,MethodCallAnalyzer,processArgumentOfExternalMethodInvocation,#MethodDeclaration#AbstractVariable#number#VariableDeclaration#Set#number#,437
Before Change
for(AbstractVariable originalField : methodBodyObject.getDefinedFieldsThroughParameters()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = new CompositeVariable(argumentDeclaration.getVariableBindingKey(), argumentDeclaration.getVariableName(),
argumentDeclaration.getVariableType(), argumentDeclaration.isField(), argumentDeclaration.isParameter(), argumentDeclaration.isStatic(), ((CompositeVariable)originalField).getRightPart());
definedVariables.add(field);
}
}
for(AbstractVariable originalField : methodBodyObject.getUsedFieldsThroughParameters()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = new CompositeVariable(argumentDeclaration.getVariableBindingKey(), argumentDeclaration.getVariableName(),
argumentDeclaration.getVariableType(), argumentDeclaration.isField(), argumentDeclaration.isParameter(), argumentDeclaration.isStatic(), ((CompositeVariable)originalField).getRightPart());
usedVariables.add(field);
}
}
processedMethods.add(methodBinding.getKey());
Map<AbstractVariable, LinkedHashSet<MethodInvocationObject>> invokedMethodsThroughParameters = methodBodyObject.getInvokedMethodsThroughParameters();
for(AbstractVariable originalField : invokedMethodsThroughParameters.keySet()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = null;
if(originalField instanceof PlainVariable)
field = argumentDeclaration;
else
field = new CompositeVariable(argumentDeclaration.getVariableBindingKey(), argumentDeclaration.getVariableName(),
argumentDeclaration.getVariableType(), argumentDeclaration.isField(), argumentDeclaration.isParameter(), argumentDeclaration.isStatic(), ((CompositeVariable)originalField).getRightPart());
LinkedHashSet<MethodInvocationObject> methodInvocations = invokedMethodsThroughParameters.get(originalField);
for(MethodInvocationObject methodInvocationObject : methodInvocations) {
MethodInvocation methodInvocation2 = methodInvocationObject.getMethodInvocation();
After Change
}
}
private void processArgumentOfExternalMethodInvocation(MethodDeclaration methodDeclaration, AbstractVariable argumentDeclaration, int initialArgumentPosition,
VariableDeclaration parameterDeclaration, Set<String> processedMethods, int depth) {
LibraryClassStorage instance = LibraryClassStorage.getInstance();
IMethodBinding methodBinding = methodDeclaration.resolveBinding();
Block methodBody = methodDeclaration.getBody();
if(methodBody != null) {
IMethod iMethod = (IMethod)methodBinding.getJavaElement();
IClassFile iClassFile = iMethod.getClassFile();
ASTInformationGenerator.setCurrentITypeRoot(iClassFile);
MethodBodyObject methodBodyObject = new MethodBodyObject(methodBody);
for(AbstractVariable originalField : methodBodyObject.getDefinedFieldsThroughParameters()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = new CompositeVariable(argumentDeclaration, ((CompositeVariable)originalField).getRightPart());
definedVariables.add(field);
}
}
for(AbstractVariable originalField : methodBodyObject.getUsedFieldsThroughParameters()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = new CompositeVariable(argumentDeclaration, ((CompositeVariable)originalField).getRightPart());
usedVariables.add(field);
}
}
processedMethods.add(methodBinding.getKey());
Map<AbstractVariable, LinkedHashSet<MethodInvocationObject>> invokedMethodsThroughParameters = methodBodyObject.getInvokedMethodsThroughParameters();
for(AbstractVariable originalField : invokedMethodsThroughParameters.keySet()) {
if(parameterDeclaration.resolveBinding().getKey().equals(originalField.getVariableBindingKey())) {
AbstractVariable field = null;
if(originalField instanceof PlainVariable)
field = argumentDeclaration;
else
field = new CompositeVariable(argumentDeclaration, ((CompositeVariable)originalField).getRightPart());
LinkedHashSet<MethodInvocationObject> methodInvocations = invokedMethodsThroughParameters.get(originalField);
for(MethodInvocationObject methodInvocationObject : methodInvocations) {
MethodInvocation methodInvocation2 = methodInvocationObject.getMethodInvocation();